When debugging software applications, it may be important to interrupt execution of the application when a certain pattern is detected. For example, execution of an application might be interrupted when a particular address is transmitted via a system bus. Such an ability might, for example, help a software engineer determine why one or more pixels in a display image are corrupted.
In some cases, such as in a video processing system, a number of different processing units may execute applications that interact with each other. Moreover, the various processing units may exchange information via a number of different buses, such as system buses, memory buses, and other types of data buses. Also note that different buses may exchange information in accordance with different bus protocols. As a result, debugging these types of software applications can be a difficult and time consuming task. For example, interrupting a graphics processing unit when a particular pattern of data is detected might not let a software engineer determine the state of information in a memory unit at that exact time (e.g., because another processing unit in the system might have already overwritten the information).